GtkStyleProperties: Merge font descriptions on merge()
authorCarlos Garnacho <carlosg@gnome.org>
Wed, 3 Nov 2010 10:36:18 +0000 (11:36 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Sat, 4 Dec 2010 14:38:34 +0000 (15:38 +0100)
This is necessary so incomplete font descriptions are ensured to have
family and size.

gtk/gtkstyleproperties.c

index df8529bd67a65625d4b5bfb8c442b532dd23e9d4..2c3a9558a04d44b9d21cc3eb057aa16c1e6fd0ac 100644 (file)
@@ -1059,7 +1059,19 @@ gtk_style_properties_merge (GtkStyleProperties       *props,
           data = &g_array_index (prop_to_merge->values, ValueData, i);
           value = property_data_get_value (prop, data->state);
 
-          if (replace || !G_IS_VALUE (value))
+          if (G_VALUE_TYPE (&data->value) == PANGO_TYPE_FONT_DESCRIPTION &&
+              G_IS_VALUE (value))
+            {
+              PangoFontDescription *font_desc;
+              PangoFontDescription *font_desc_to_merge;
+
+              /* Handle merging of font descriptions */
+              font_desc = g_value_get_boxed (value);
+              font_desc_to_merge = g_value_get_boxed (&data->value);
+
+              pango_font_description_merge (font_desc, font_desc_to_merge, replace);
+            }
+          else if (replace || !G_IS_VALUE (value))
             {
               if (!G_IS_VALUE (value))
                 g_value_init (value, G_VALUE_TYPE (&data->value));